<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			/**
			 * js引擎在执行前，会将变量的声明部分提升到作用域顶部。这样可以在为声明变量前使用该变量。（var声明的变量可以变量提升,未赋值前是undefined。赋值操作并不会提升。）
			 * 
			 * 函数提升只针对具名函数，对赋值的匿名函数，不存在函数提升。函数提升是将整个函数提升到作用域最前端。
			 * 
			 * 函数提升优先级高于变量提升，且不会被同名变量声明覆盖，但是会被变量赋值后覆盖。而且存在同名函数与同名变量时，先执行函数。
			*/
		   
		   // console.log(a); // f a(){ console.log(2); }
		   // console.log(a()); // 2
		   // var a = 1;
		   // function a(){
		   //     console.log(2);
		   // }
		   // console.log(a); // 1
		   // a = 3;
		   // console.log(a()); // Uncaught TypeError: a is not a function
		   //相当于=>
		   // var a = function(){
			  //  console.log(2);
		   // }
		   // var a;
		   // console.log(a);
		   // console.log(a());
		   // a = 1;
		   // console.log(a);
		   // a = 3;
		   // console.log(a())
		   
		   
		   
		   // var a = 1111;
		   // console.log(a);
		   // var a;
		   // console.log(a);
		   //相当于=>
		   // var a;
		   // var a;
		   // a = 1111;
		   // console.log(a)
		   // console.log(a)
		</script>
	</body>
</html>